/**
 * 通知类型枚举
 */
export type ToastType = 'info' | 'warn' | 'success' | 'error';

/**
 * 通知水平位置
 */
export type ToastHorizontalPosition = 'start' | 'center' | 'end' | 'left' | 'right';

/**
 * 通知垂直位置
 */
export type ToastVerticalPosition = 'top' | 'bottom';

/**
 * 通知消息模型
 * 
 * 示例：
 * ```typescript
 * const notification: NotificationMessage = {
 *   message: '操作成功',
 *   type: 'success',
 *   duration: 3000
 * };
 * ```
 */
export interface ToastMessage {
  /** 通知内容 */
  message: string;
  
  /** 通知类型：info | warn | success | error */
  type: ToastType;
  
  /** 目标容器（默认 'root'） */
  target?: string;
  
  /** 显示时长（毫秒）0 表示不自动关闭 */
  duration?: number;
  
  /** 是否强制关闭 */
  forceDismiss?: boolean;
  
  /** 水平位置 */
  horizontalPosition?: ToastHorizontalPosition;
  
  /** 垂直位置 */
  verticalPosition?: ToastVerticalPosition;
  
  /** 自定义面板样式类 */
  panelClass?: string | string[];
  
  /** 是否使用现代样式 */
  modern?: boolean;
}

/**
 * 隐藏通知配置
 */
export interface HideToastConfig {
  /** 目标容器（默认 'root'） */
  target?: string;
}


/**
 * Toast 自定义面板数据接口
 * 
 * 示例：
 * ```typescript
 * const data: ToastPanelData = {
 *   notification: toastMessage,
 *   panelClass: ['cne-toast-panel', 'toast-panel'],
 *   destroyToastComponent: () => {}
 * };
 * ```
 */
export interface ToastPanelData {
  /** 通知消息 */
  notification: ToastMessage;
  
  /** 父元素引用 */
  parent?: any;
  
  /** 面板样式类 */
  panelClass: string[];
  
  /** 销毁 Toast 组件回调 */
  destroyToastComponent: () => void;
}
